#ifndef __APP_LORA_H
#define __APP_LORA_H

// 枚举定义：帧格式
typedef enum
{
    LR_FRAME_HEAD_H    = 0x69,        // 帧头
    LR_FRAME_HEAD_L    = 0xff,
    LR_FRAME_END_H     = 0x96,        // 帧尾
    LR_FRAME_END_L     = 0xff,
    
    LR_FRAME_QUERY     = 0xaa,        // 查询
    LR_FRAME_ASK_QUERY = 0xfa,        // 应答查询
    
    LR_FRAME_SET       = 0x55,        // 设置
    LR_FRAME_ASK_SET   = 0xf5,        // 应答设置
    
} lora_frame_t;

// 枚举定义：模块码
typedef enum {
    LR_MODULE_TEST_LED     = 0xa0,    // 板载LED测试
    LR_MODULE_RELAY        = 0xa1,    // 继电器
    LR_MODULE_LED          = 0xa2,    // LED灯
    LR_MODULE_BUZZER       = 0xa3,    // 蜂鸣器
    LR_MODULE_DATA         = 0xa4,    // 温湿度
} lora_module_t;

// 枚举定义：寄存器
typedef enum {
    LR_REG_TEST_LED_STATE  = 0x01,    // 板载LED测试
    LR_REG_RELAY_STATE     = 0x01,    // 继电器状态
    LR_REG_LED_COLOR       = 0x01,    // LED颜色
    LR_REG_BUZZER_STATE    = 0x01,    // 蜂鸣器状态
    LR_REG_DATE_ENABLE     = 0x01,    // 温湿度
} lora_register_t;

typedef struct __Master
{
    uint8_t addr_h;         // 地址高位
    uint8_t addr_l;         // 地址低位
    uint8_t channel;        // 信道
} lora_Master_t;

typedef struct __slave
{
    uint8_t addr_h;         // 地址高位
    uint8_t addr_l;         // 地址低位
    uint8_t channel;        // 信道
} lora_Slave_t;

typedef struct __lora_frame_query
{
    uint8_t module;         // 模块码
    uint8_t register_addr;  // 寄存器地址
} lora_frame_query_t;

typedef struct __lora_frame_set
{
    uint8_t module;         // 模块码
    uint8_t register_addr;  // 寄存器地址
    uint8_t data[2];        // 数据
} lora_frame_set_t;


void App_Lora_Init(void);



#endif
